μ¬λ³Ό κΈ°λ° μμ± μ΅μ νλ₯Ό μν JavaScript Symbol μμ± μΊμλ₯Ό μ΄ν΄λ³΄μΈμ. μ¬λ³Όμ΄ JavaScript μ ν리μΌμ΄μ μμ μ±λ₯κ³Ό λ°μ΄ν° νλΌμ΄λ²μλ₯Ό μ΄λ»κ² ν₯μμν€λμ§ μμ보μΈμ.
JavaScript Symbol μμ± μΊμ: μ¬λ³Ό κΈ°λ° μμ± μ΅μ ν
νλ JavaScript κ°λ°μμ μ΅μ νλ κ³ μ±λ₯ μ ν리μΌμ΄μ μ ꡬμΆνλ λ° ν΅μ¬μ λλ€. μ’ μ’ κ°κ³Όλμ§λ§ κ°λ ₯ν κΈ°μ μ€ νλλ Symbol μμ± μΊμλ₯Ό νμ©νλ κ²μ λλ€. μ΄ μΊμλ JavaScript μμ§ λ΄μ λ΄λΆ λ©μ»€λμ¦μΌλ‘, μ¬λ³Όλ‘ ν€ μ§μ λ μμ±μ μ κ·Όνλ μ±λ₯μ ν¬κ² ν₯μμν΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ Symbol μμ± μΊμμ 볡μ‘μ±μ κΉμ΄ νκ³ λ€μ΄ μλ λ°©μ, μ΄μ λ° JavaScript μ½λλ₯Ό μ΅μ ννκΈ° μν μ€μ μ¬λ‘λ₯Ό νꡬν©λλ€.
JavaScript μ¬λ³Ό μ΄ν΄νκΈ°
Symbol μμ± μΊμμ λν΄ μμΈν μμ보기 μ μ, JavaScriptμμ μ¬λ³Όμ΄ 무μμΈμ§ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. ECMAScript 2015(ES6)μ λμ λ μ¬λ³Όμ κ³ μ νκ³ λ³κ²½ λΆκ°λ₯ν μλ³μλ₯Ό λνλ΄λ μμ λ°μ΄ν° νμ μ λλ€. λ¬Έμμ΄κ³Ό λ¬λ¦¬ μ¬λ³Όμ κ³ μ μ±μ΄ 보μ₯λ©λλ€. μ΄λ¬ν νΉμ± λλΆμ κ°μ²΄ λ΄μμ μ¨κ²¨μ§ λλ λΉκ³΅κ° μμ±μ λ§λλ λ° μ΄μμ μ λλ€. μ¬λ³Όμ ν΄λΉ μ¬λ³Όμ μ κ·Όν μ μλ μ½λλ§μ΄ νΉμ μμ±κ³Ό μνΈ μμ©νλ λ° μ¬μ©ν μ μλ 'λΉλ° ν€'λΌκ³ μκ°νλ©΄ λ©λλ€.
μ¬λ³Όμ μμ±νλ κ°λ¨ν μμλ λ€μκ³Ό κ°μ΅λλ€:
const mySymbol = Symbol('myDescription');
console.log(mySymbol); // Output: Symbol(myDescription)
Symbol()μ μ λ¬λλ μ νμ λ¬Έμμ΄ μΈμλ λλ²κΉ
λͺ©μ μΌλ‘ μ¬μ©λλ μ€λͺ
μ
λλ€. μ΄ μ€λͺ
μ μ¬λ³Όμ κ³ μ μ±μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.
μμ±μ μ¬λ³Όμ μ¬μ©νλ μ΄μ ?
μμ± ν€λ‘ μ¬μ©λ λ μ¬λ³Όμ λ¬Έμμ΄μ λΉν΄ λͺ κ°μ§ μ΄μ μ μ 곡ν©λλ€:
- κ³ μ μ±: μμμ μΈκΈνλ―μ΄ μ¬λ³Όμ κ³ μ μ±μ΄ 보μ₯λ©λλ€. μ΄λ νΉν νμ¬ λΌμ΄λΈλ¬λ¦¬λ λκ·λͺ¨ μ½λλ² μ΄μ€μμ μμ ν λ μλνμ§ μμ μμ± μ΄λ¦ μΆ©λμ λ°©μ§ν©λλ€. μ¬λ¬ λλ₯μ κ±Έμ³ μ§νλλ λκ·λͺ¨ νμ νλ‘μ νΈμμ μλ‘ λ€λ₯Έ κ°λ°μλ€μ΄ μλμΉ μκ² λμΌν λ¬Έμμ΄ ν€λ₯Ό λ€λ₯Έ λͺ©μ μΌλ‘ μ¬μ©νλ μλ리μ€λ₯Ό μμν΄ λ³΄μΈμ. μ¬λ³Όμ μ΄λ¬ν μνμ μ κ±°ν©λλ€.
- νλΌμ΄λ²μ: μ¬λ³Όλ‘ ν€ μ§μ λ μμ±μ κΈ°λ³Έμ μΌλ‘ μ΄κ±° κ°λ₯νμ§ μμ΅λλ€. μ¦,
Object.getOwnPropertySymbols()λ₯Ό μ¬μ©νμ¬ λͺ μμ μΌλ‘ κ²μνμ§ μλ νfor...in루νλObject.keys()μ λνλμ§ μμ΅λλ€. μ΄λ λ°μ΄ν° μ¨κΉμ ν ννλ₯Ό μ 곡νμ§λ§, μ§μ ν νλΌμ΄λ²μλ μλλλ€ (νκ³ ν κ°λ°μλ μ¬μ ν μ κ·Όν μ μκΈ° λλ¬Έμ λλ€). - μ¬μ©μ μ μ λμ: νΉμ μ μλ €μ§ μ¬λ³Όμ μ¬μ©νλ©΄ λ΄μ₯ JavaScript μμ
μ λμμ μ¬μ©μ μ μν μ μμ΅λλ€. μλ₯Ό λ€μ΄,
Symbol.iteratorλ₯Ό μ¬μ©νλ©΄ κ°μ²΄κ° μ΄λ»κ² λ°λ³΅λμ΄μΌ νλμ§ μ μν μ μμΌλ©°,Symbol.toStringTagλ κ°μ²΄μ λ¬Έμμ΄ ννμ μ¬μ©μ μ μν μ μμ΅λλ€. μ΄λ κ°μ²΄ λμμ λν μ μ°μ±κ³Ό μ μ΄λ₯Ό ν₯μμν΅λλ€. μλ₯Ό λ€μ΄, μ¬μ©μ μ μ μ΄ν°λ μ΄ν°λ₯Ό μμ±νλ©΄ λκ·λͺ¨ λ°μ΄ν° μΈνΈλ 볡μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό λ€λ£¨λ μ ν리μΌμ΄μ μμ λ°μ΄ν° μ²λ¦¬λ₯Ό λ¨μνν μ μμ΅λλ€.
Symbol μμ± μΊμ: μλ λ°©μ
Symbol μμ± μΊμλ JavaScript μμ§(μ: Chrome λ° Node.jsμ V8, Firefoxμ SpiderMonkey, Safariμ JavaScriptCore) λ΄μ λ΄λΆ μ΅μ νμ λλ€. μ΄λ μ¬λ³Όλ‘ ν€ μ§μ λ μμ±μ μ κ·Όνλ μ±λ₯μ ν₯μμν€κΈ° μν΄ μ€κ³λμμ΅λλ€.
μλ λ°©μμ λν κ°λ΅ν μ€λͺ μ λ€μκ³Ό κ°μ΅λλ€:
- μ¬λ³Ό μ‘°ν: μ¬λ³Όμ μ¬μ©νμ¬ μμ±μ μ κ·Όν λ(μ:
myObject[mySymbol]), JavaScript μμ§μ λ¨Όμ μ¬λ³Όμ μ°ΎμμΌ ν©λλ€. - μΊμ νμΈ: μμ§μ Symbol μμ± μΊμλ₯Ό νμΈνμ¬ μ¬λ³Όκ³Ό μ°κ²°λ μμ± μ€νμ μ΄ μ΄λ―Έ μΊμλμ΄ μλμ§ νμΈν©λλ€.
- μΊμ ννΈ: μΊμμμ μ¬λ³Όμ΄ λ°κ²¬λλ©΄(μΊμ ννΈ), μμ§μ μΊμμμ μ§μ μμ± μ€νμ μ κ²μν©λλ€. μ΄λ λ§€μ° λΉ λ₯Έ μμ μ λλ€.
- μΊμ λ―Έμ€: μΊμμμ μ¬λ³Όμ΄ λ°κ²¬λμ§ μμΌλ©΄(μΊμ λ―Έμ€), μμ§μ κ°μ²΄μ νλ‘ν νμ 체μΈμμ μμ±μ μ°ΎκΈ° μν΄ λ λλ¦° μ‘°νλ₯Ό μνν©λλ€. μμ±μ΄ λ°κ²¬λλ©΄ μμ§μ ν΄λΉ μ¬λ³Όκ³Ό μ€νμ μ λμ€μ μ¬μ©ν μ μλλ‘ μΊμμ μ μ₯ν©λλ€.
λμΌν κ°μ²΄(λλ λμΌν μμ±μμ κ°μ²΄)μμ λμΌν μ¬λ³Όμ λν νμ μ κ·Όμ μΊμ ννΈλ₯Ό λ°μμμΌ μλΉν μ±λ₯ ν₯μμΌλ‘ μ΄μ΄μ§λλ€.
Symbol μμ± μΊμμ μ΄μ
Symbol μμ± μΊμλ λͺ κ°μ§ μ£Όμ μ΄μ μ μ 곡ν©λλ€:
- ν₯μλ μ±λ₯: μ£Όμ μ΄μ μ λ λΉ λ₯Έ μμ± μ κ·Ό μκ°μ λλ€. μΊμ ννΈλ νΉν 볡μ‘ν κ°μ²΄ κ³μΈ΅ ꡬ쑰λ₯Ό λ€λ£° λ μ ν΅μ μΈ μμ± μ‘°νλ³΄λ€ ν¨μ¬ λΉ λ¦ λλ€. μ΄λ¬ν μ±λ₯ ν₯μμ κ²μ κ°λ°μ΄λ λ°μ΄ν° μκ°νμ κ°μ΄ κ³μ° μ§μ½μ μΈ μ ν리μΌμ΄μ μμ μ€μν μ μμ΅λλ€.
- λ©λͺ¨λ¦¬ μ¬μ©λ κ°μ: μΊμ μμ²΄κ° μΌλΆ λ©λͺ¨λ¦¬λ₯Ό μλΉνμ§λ§, μ€λ³΅λ μμ± μ‘°νλ₯Ό νΌν¨μΌλ‘μ¨ μ 체 λ©λͺ¨λ¦¬ μ¬μ©λμ κ°μ μ μΌλ‘ μ€μΌ μ μμ΅λλ€.
- ν₯μλ λ°μ΄ν° νλΌμ΄λ²μ: 보μ κΈ°λ₯μ μλμ§λ§, μ¬λ³Όλ‘ ν€ μ§μ λ μμ±μ λΉμ΄κ±° κ°λ₯ νΉμ±μ μ΄λ μ λμ λ°μ΄ν° μ¨κΉμ μ 곡νμ¬ μλμΉ μμ μ½λκ° λ―Όκ°ν λ°μ΄ν°μ μ κ·Όνκ±°λ μμ νλ κ²μ λ μ΄λ ΅κ² λ§λλλ€. μ΄λ μΌλΆ λ΄λΆ λ°μ΄ν°λ₯Ό λΉκ³΅κ°λ‘ μ μ§νλ©΄μ κ³΅μ© APIλ₯Ό λ ΈμΆνλ €λ μλ리μ€μμ νΉν μ μ©ν©λλ€.
μ€μ μμ
Symbol μμ± μΊμλ₯Ό μ¬μ©νμ¬ JavaScript μ½λλ₯Ό μ΅μ ννλ λ°©λ²μ 보μ¬μ£Όλ λͺ κ°μ§ μ€μ μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
μμ 1: ν΄λμ€ λ΄μ λΉκ³΅κ° λ°μ΄ν°
μ΄ μμλ ν΄λμ€ λ΄μμ μ¬λ³Όμ μ¬μ©νμ¬ λΉκ³΅κ° μμ±μ λ§λλ λ°©λ²μ 보μ¬μ€λλ€:
class MyClass {
constructor(name) {
this._name = Symbol('name');
this[this._name] = name;
}
getName() {
return this[this._name];
}
}
const myInstance = new MyClass('Alice');
console.log(myInstance.getName()); // Output: Alice
console.log(myInstance._name); //Output: Symbol(name)
console.log(myInstance[myInstance._name]); // Output: Alice
μ΄ μμμμ _nameμ name μμ±μ ν€ μν μ νλ μ¬λ³Όμ
λλ€. μμ ν λΉκ³΅κ°λ μλμ§λ§(Object.getOwnPropertySymbols()λ₯Ό μ¬μ©νμ¬ μ¬μ ν μ κ·Όν μ μμ), λλΆλΆμ μΌλ°μ μΈ μμ± μ΄κ±° ννλ‘λΆν° ν¨κ³Όμ μΌλ‘ μ¨κ²¨μ Έ μμ΅λλ€.
μμ 2: μ¬μ©μ μ μ μ΄ν°λ μ΄ν°
μ΄ μμλ Symbol.iteratorλ₯Ό μ¬μ©νμ¬ κ°μ²΄μ λν μ¬μ©μ μ μ μ΄ν°λ μ΄ν°λ₯Ό λ§λλ λ°©λ²μ 보μ¬μ€λλ€:
const myIterable = {
data: ['a', 'b', 'c'],
[Symbol.iterator]() {
let index = 0;
return {
next: () => {
if (index < this.data.length) {
return { value: this.data[index++], done: false };
} else {
return { value: undefined, done: true };
}
},
};
},
};
for (const item of myIterable) {
console.log(item); // Output: a, b, c
}
ν€ Symbol.iteratorλ₯Ό κ°μ§ λ©μλλ₯Ό μ μν¨μΌλ‘μ¨, for...of 루νλ₯Ό μ¬μ©νμ¬ myIterable κ°μ²΄κ° μ΄λ»κ² λ°λ³΅λ μ§ μ¬μ©μ μ μν μ μμ΅λλ€. JavaScript μμ§μ Symbol μμ± μΊμλ₯Ό μ¬μ©νμ¬ Symbol.iterator μμ±μ ν¨μ¨μ μΌλ‘ μ κ·Όν κ²μ
λλ€.
μμ 3: λ©νλ°μ΄ν° μ£Όμ
μ¬λ³Όμ κΈ°μ‘΄ μμ±κ³Ό μΆ©λνμ§ μκ³ κ°μ²΄μ λ©νλ°μ΄ν°λ₯Ό 첨λΆνλ λ° μ¬μ©λ μ μμ΅λλ€. μ΄λ κ°μ²΄μ ν΅μ¬ ꡬ쑰λ₯Ό μμ νμ§ μκ³ μΆκ° μ 보λ₯Ό κ°μ²΄μ μΆκ°ν΄μΌ νλ μλ리μ€μμ μ μ©ν©λλ€. μ¬λ¬ μΈμ΄λ₯Ό μ§μνλ μ μμκ±°λ νλ«νΌμ κ°λ°νλ€κ³ μμν΄ λ³΄μΈμ. μ ν μ€λͺ μ λ²μμ μ ν κ°μ²΄μ κ΄λ ¨λ λ©νλ°μ΄ν°λ‘ μ μ₯νκ³ μΆμ μ μμ΅λλ€. μ¬λ³Όμ μ ν κ°μ²΄μ μ£Όμ μμ±μ μ€μΌμν€μ§ μμΌλ©΄μ μ΄λ₯Ό λ¬μ±ν μ μλ κΉλνκ³ ν¨μ¨μ μΈ λ°©λ²μ μ 곡ν©λλ€.
const product = {
name: 'Laptop',
price: 1200,
};
const productDescriptionEN = Symbol('productDescriptionEN');
const productDescriptionFR = Symbol('productDescriptionFR');
product[productDescriptionEN] = 'High-performance laptop with 16GB RAM and 512GB SSD.';
product[productDescriptionFR] = 'Ordinateur portable haute performance avec 16 Go de RAM et 512 Go de SSD.';
console.log(product[productDescriptionEN]);
console.log(product[productDescriptionFR]);
μ±λ₯ κ³ λ € μ¬ν
Symbol μμ± μΊμκ° μΌλ°μ μΌλ‘ μ±λ₯μ ν₯μμν€μ§λ§, λͺ κ°μ§ κ³ λ €ν΄μΌ ν μ¬νμ΄ μμ΅λλ€:
- μΊμ 무ν¨ν: κ°μ²΄μ κ΅¬μ‘°κ° ν¬κ² λ³κ²½λλ©΄ Symbol μμ± μΊμκ° λ¬΄ν¨νλ μ μμ΅λλ€. μ΄λ μμ±μ μΆκ°νκ±°λ μ κ±°νκ±°λ, κ°μ²΄μ νλ‘ν νμ 체μΈμ λ³κ²½νλ κ²½μ°μ λ°μν μ μμ΅λλ€. λΉλ²ν μΊμ 무ν¨νλ μ±λ₯ μ΄μ μ μμμν¬ μ μμ΅λλ€. λ°λΌμ μ¬λ³Ό ν€ μμ±μ΄ μΌκ΄λκ² μ‘΄μ¬νλ μμ μ μΈ κ΅¬μ‘°λ‘ κ°μ²΄λ₯Ό μ€κ³νμμμ€.
- μ¬λ³Ό μ€μ½ν: μΊμμ μ΄μ μ λμΌν μμ±μμ μ¬λ¬ κ°μ²΄ λλ λμΌν μ€μ½ν λ΄μμ λμΌν μ¬λ³Όμ΄ λ°λ³΅μ μΌλ‘ μ¬μ©λ λ κ°μ₯ λλλ¬μ§λλ€. λΆνμνκ² μλ‘μ΄ μ¬λ³Όμ μμ±νλ κ²μ νΌνμμμ€. κ° κ³ μ μ¬λ³Όμ μ€λ²ν€λλ₯Ό μΆκ°ν©λλ€.
- μμ§λ³ ꡬν: Symbol μμ± μΊμμ ꡬν μΈλΆ μ¬νμ λ€μν JavaScript μμ§λ§λ€ λ€λ₯Ό μ μμ΅λλ€. μΌλ°μ μΈ μμΉμ λμΌνμ§λ§, νΉμ μ±λ₯ νΉμ±μ λ€λ₯Ό μ μμ΅λλ€. μ΅μ μ μ±λ₯μ 보μ₯νκΈ° μν΄ λ€μν νκ²½μμ μ½λλ₯Ό νλ‘νμΌλ§νλ κ²μ΄ νμ μ’μ μκ°μ λλ€.
Symbol μμ± μ΅μ νλ₯Ό μν λͺ¨λ² μ¬λ‘
Symbol μμ± μΊμμ μ΄μ μ κ·Ήλννλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄μμμ€:
- μ¬λ³Ό μ¬μ¬μ©: κ°λ₯ν ν λμΌν μ νμ μ¬λ¬ κ°μ²΄μμ λμΌν μ¬λ³Όμ μ¬μ¬μ©νμμμ€. μ΄λ μΊμ ννΈ κ°λ₯μ±μ κ·Ήλνν©λλ€. μ¬λ³Όμ μ€μ μ μ₯μλ₯Ό λ§λ€κ±°λ ν΄λμ€μ μ μ μμ±μΌλ‘ μ μνμμμ€.
- μμ μ μΈ κ°μ²΄ ꡬ쑰: μΊμ 무ν¨νλ₯Ό μ΅μννκΈ° μν΄ μμ μ μΈ κ΅¬μ‘°λ‘ κ°μ²΄λ₯Ό μ€κ³νμμμ€. κ°μ²΄κ° μμ±λ ν μμ±μ λμ μΌλ‘ μΆκ°νκ±°λ μ κ±°νλ κ²μ νΌνμμμ€. νΉν ν΄λΉ μμ±μ μμ£Ό μ κ·Όνλ κ²½μ° λμ± κ·Έλ μ΅λλ€.
- κ³Όλν μ¬λ³Ό μμ± νΌνκΈ°: λ무 λ§μ κ³ μ μ¬λ³Όμ μμ±νλ©΄ λ©λͺ¨λ¦¬ μλΉκ° μ¦κ°νκ³ μ μ¬μ μΌλ‘ μ±λ₯μ΄ μ νλ μ μμ΅λλ€. κ³ μ μ±μ 보μ₯νκ±°λ λ°μ΄ν° μ¨κΉμ μ 곡ν΄μΌ ν λλ§ μ¬λ³Όμ μμ±νμμμ€. κ°μ²΄μ κ°λΉμ§ 컬λ μ μ λ°©ν΄νμ§ μκ³ κ°μ²΄μ λ°μ΄ν°λ₯Ό μ°κ²°ν΄μΌ ν κ²½μ° WeakMapμ λμμΌλ‘ κ³ λ €νμμμ€.
- μ½λ νλ‘νμΌλ§: νλ‘νμΌλ§ λꡬλ₯Ό μ¬μ©νμ¬ μ½λμ μ±λ₯ λ³λͺ© νμμ μλ³νκ³ Symbol μμ± μΊμκ° μ€μ λ‘ μ±λ₯μ ν₯μμν€λμ§ νμΈνμμμ€. λ€μν JavaScript μμ§μ λ€λ₯Έ μ΅μ ν μ λ΅μ κ°μ§ μ μμΌλ―λ‘, λͺ©ν νκ²½μμ μ΅μ νκ° ν¨κ³Όμ μΈμ§ νμΈνλ €λ©΄ νλ‘νμΌλ§μ΄ νμμ μ λλ€. Chrome DevTools, Firefox Developer Tools λ° Node.jsμ λ΄μ₯ νλ‘νμΌλ¬λ μ±λ₯ λΆμμ μ μ©ν 리μμ€μ λλ€.
Symbol μμ± μΊμμ λμ
Symbol μμ± μΊμκ° μλΉν μ΄μ μ μ 곡νμ§λ§, νΉμ νμμ λ°λΌ κ³ λ €ν μ μλ λ체 μ κ·Ό λ°©μμ΄ μμ΅λλ€:
- WeakMap: WeakMapμ κ°μ²΄κ° κ°λΉμ§ 컬λ μ λλ κ²μ λ°©μ§νμ§ μκ³ κ°μ²΄μ λ°μ΄ν°λ₯Ό μ°κ²°νλ λ°©λ²μ μ 곡ν©λλ€. κ°μ²΄μ λν λ©νλ°μ΄ν°λ₯Ό μ μ₯ν΄μΌ νμ§λ§ κ°μ²΄λ₯Ό λΆνμνκ² μ μ§νκ³ μΆμ§ μμ λ νΉν μ μ©ν©λλ€. μ¬λ³Όκ³Ό λ¬λ¦¬ WeakMapμ ν€λ κ°μ²΄μ¬μΌ ν©λλ€.
- ν΄λ‘μ : ν΄λ‘μ λ ν¨μ μ€μ½ν λ΄μμ λΉκ³΅κ° λ³μλ₯Ό λ§λλ λ° μ¬μ©λ μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ ν¨μ μΈλΆμμ λΉκ³΅κ° λ³μμ μ κ·Όν μ μμΌλ―λ‘ μ§μ ν λ°μ΄ν° μ¨κΉμ μ 곡ν©λλ€. κ·Έλ¬λ ν΄λ‘μ λ λμΌν ν¨μμ μ¬λ¬ μΈμ€ν΄μ€λ₯Ό λ§λ€ λ μ¬λ³Όμ μ¬μ©νλ κ²λ³΄λ€ μ±λ₯μ΄ λ¨μ΄μ§ μ μμ΅λλ€.
- λͺ λͺ κ·μΉ: λͺ λͺ κ·μΉ(μ: λΉκ³΅κ° μμ±μ λ°μ€ μ λμ¬ μ¬μ©)μ μ¬μ©νλ©΄ μμ±μ μ§μ μ κ·Όν΄μλ μ λλ€λ μκ°μ μΈ νμλ₯Ό μ 곡ν μ μμ΅λλ€. κ·Έλ¬λ μ΄ μ κ·Ό λ°©μμ κ°μ κ° μλ κ΄λ‘μ μμ‘΄νλ©° μ§μ ν λ°μ΄ν° μ¨κΉμ μ 곡νμ§ μμ΅λλ€.
Symbol μμ± μ΅μ νμ λ―Έλ
Symbol μμ± μΊμλ JavaScript μμ§ λ΄μμ λ°μ νλ μ΅μ ν κΈ°μ μ λλ€. JavaScriptκ° κ³μ λ°μ ν¨μ λ°λΌ μ΄ μΊμμ λν μΆκ°μ μΈ κ°μ κ³Ό μ μ λ₯Ό κΈ°λν μ μμ΅λλ€. μ¬λ³Ό λ° μμ± μ κ·Όκ³Ό κ΄λ ¨λ μλ‘μ΄ κΈ°λ₯ λ° μ΅μ νμ λν μ 보λ₯Ό μ»μΌλ €λ©΄ μ΅μ ECMAScript μ¬μ λ° JavaScript μμ§ λ¦΄λ¦¬μ€ λ ΈνΈλ₯Ό μ£Όμνμμμ€.
κ²°λ‘
JavaScript Symbol μμ± μΊμλ JavaScript μ½λμ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μλ κ°λ ₯ν μ΅μ ν κΈ°μ μ λλ€. μ¬λ³Όμ μλ λ°©μκ³Ό μΊμκ° κ΅¬νλλ λ°©μμ μ΄ν΄ν¨μΌλ‘μ¨ μ΄ κΈ°μ μ νμ©νμ¬ λ ν¨μ¨μ μ΄κ³ μ μ§ κ΄λ¦¬ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€. μ¬λ³Όμ μ¬μ¬μ©νκ³ , μμ μ μΈ κ°μ²΄ ꡬ쑰λ₯Ό μ€κ³νλ©°, κ³Όλν μ¬λ³Ό μμ±μ νΌνκ³ , μ½λλ₯Ό νλ‘νμΌλ§νμ¬ μ΅μ μ μ±λ₯μ 보μ₯νλ κ²μ κΈ°μ΅νμμμ€. μ΄λ¬ν κ΄νμ κ°λ° μν¬νλ‘μ°μ ν΅ν©ν¨μΌλ‘μ¨ μ¬λ³Ό κΈ°λ° μμ± μ΅μ νμ μ μ¬λ ₯μ μ΅λν λ°ννκ³ μ μΈκ³μ μΌλ‘ μ°μν μ¬μ©μ κ²½νμ μ 곡νλ κ³ μ±λ₯ JavaScript μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€.